package cn.itcast.usermanage.service;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

import cn.itcast.usermanage.mapper.AutoUserMapper;
import cn.itcast.usermanage.pojo.DataResult;
import cn.itcast.usermanage.pojo.User;
import tk.mybatis.mapper.entity.Example;

@Service
public class AutoUserService {

	@Autowired
	private AutoUserMapper userMapper;
	/**
	 * 分页查询方法
	 * @param page 当前页码
	 * @param rows 每页条数
	 * @return
	 */
	public DataResult<User> queryUserListByPage(Integer page, Integer rows) {
		// 使用分页助手开始分页,指定两个参数：当前页码，每页条数
		PageHelper.startPage(page, rows);
		// 然后分页拦截器会自动对接下来的查询进行分页
		List<User> users = this.userMapper.select(null);// 不传查询条件
		// 封装分页信息对象
		PageInfo<User> pageInfo = new PageInfo<>(users);
		// 封装页面数据对象
		DataResult<User> result = new DataResult<>(pageInfo.getTotal(), users);
		
		return result;
	}
	
	/**
	 * 新增用户的功能：
	 * @param user
	 */
	public void saveUser(User user) {
		user.setCreated(new Date());
		user.setUpdated(user.getCreated());
		this.userMapper.insertSelective(user);
	}
	/**
	 * 删除用户功能
	 * @param ids
	 */
	public void deleteUserByIds(Long[] ids) {
		// 把数组变为集合
		List<Object> list = new ArrayList<>();
		// 添加元素
		Collections.addAll(list, ids);
		
		// 因为是删除多条，需要用到in,因此我们使用Example
		Example example = new Example(User.class);
		// 创建条件，使用in
		example.createCriteria().andIn("id", list);
		
		this.userMapper.deleteByExample(example);
	}

	public void updateUser(User user) {
		
		userMapper.updateByPrimaryKey(user);
		
	}

	public User queryUserById(Long id) {
		// TODO Auto-generated method stub
		return this.userMapper.selectByPrimaryKey(id);
	}
}
